1 module about_associative_arrays;
2 
3 import dunit;
4 import helpers;
5 
6 class AboutAssociativeArrays
7 {
8   mixin UnitTest;
9 
10   @Test
11   void creation_and_assignment() {
12     int[string] mymap;
13     mymap["hello"] = 3;
14     assertEquals(mymap["hello"], FILL_IN_THIS_NUMBER);
15   }
16 
17   @Test
18   void other_operations() {
19     int[string] ages = ["bob" : 20, "joe" : 30, "dan" : 40];
20 
21     assertEquals(ages.length, FILL_IN_THIS_NUMBER);
22 
23     auto age = ages["bob"];
24     assertEquals(age, FILL_IN_THIS_NUMBER);
25 
26     ages["bob"] = 77;
27     assertEquals(ages["bob"], FILL_IN_THIS_NUMBER);
28 
29     import core.exception: RangeError;
30     try
31     {
32       age = ages["steven"];
33     }
34     catch (RangeError e)
35     {
36       // accessing non existing elements raise an exception
37       assertEquals(e.msg, FILL_IN_THIS_STRING);
38     }
39 
40     ages["steven"] = 66;  //new ones can be added
41     assertEquals(ages["steven"], FILL_IN_THIS_NUMBER);
42 
43     assertEquals(ages.length, FILL_IN_THIS_NUMBER);
44 
45     ages.remove("joe");  // you can also remove elements
46 
47     assertEquals(ages.length, FILL_IN_THIS_NUMBER);
48   }
49 
50   @Test
51     void keys_and_values() {
52       string[string] colors =  [ "black":"000000",
53                                  "white":"FFFFFF",
54                                  "red"  :"FF0000",
55                                  "green":"00FF00",
56                                  "blue" :"0000FF"];
57       assertEquals(colors.keys.length,FILL_IN_THIS_NUMBER);   // .keys gives an array with all the keys
58       assertEquals(colors.values.length,FILL_IN_THIS_NUMBER); // same for .values
59 
60     }
61 
62 }